﻿function showProblem(pid) {
	if (refreshTab('showProblem' + pid)) return;

	var toolbar = new Ext.Toolbar({
				items : [new Ext.Button({
									text : '刷新',
									iconCls : 'refresh-icon',
									handler : onRefresh
								}), new Ext.Toolbar.Separator(), new Ext.Button({
									text : '统计',
									iconCls : 'statistics-icon',
									handler : onStatistics
								}), new Ext.Button({
									text : '状态',
									iconCls : 'status-icon',
									handler : onStatus
								}), new Ext.Button({
									text : '讨论',
									iconCls : 'discuss-icon',
									handler : onDiscuss,
									disabled : !sys.canViewDiscuss
								})]
			});
	if (sys.god) toolbar.add([new Ext.Toolbar.Separator(), new Ext.Button({
						text : '编辑',
						iconCls : 'edit-icon',
						handler : onEdit
					}), new Ext.Button({
						text : '删除',
						iconCls : 'delete-icon',
						handler : onDelete
					}), new Ext.Toolbar.Separator(), new Ext.Button({
						text : '重判代码',
						iconCls : 'rejudge-icon',
						handler : onRejudge
					}), new Ext.Button({
						text : '清空代码',
						iconCls : 'clean-icon',
						handler : onClean
					})]);
	toolbar.add([new Ext.Toolbar.Fill(), new Ext.Button({
						text : '提交代码',
						iconCls : 'submit-icon',
						handler : onSubmit
					})])

	var loader = {
		url : url.showProblem,
		params : {
			pid : pid
		},
		nocache : true,
		text : '载入中...'
	};
	var panel = new Ext.Panel({
				id : 'showProblem' + pid,
				title : 'Problem ' + pid,
				iconCls : 'problems-icon',
				closable : true,
				autoScroll : true,
				autoLoad : loader,
				bbar : toolbar
			});
	panel.onRefresh = onRefresh;

	addTab(panel);

	getDiscussCount({
				pid : pid,
				success : function(obj) {
					toolbar.get(4).setText('讨论(' + obj.count + ')');
					toolbar.get(4).setTooltip('共有 ' + obj.count + ' 条讨论');
				}
			});

	function onRefresh() {
		panel.load(loader);
		toolbar.get(4).setDisabled(!sys.canViewDiscuss);
	}
	function onStatistics() {
		showProblemStatistics(pid);
	}
	function onStatus() {
		showStatusList({
					pid : pid
				});
	}
	function onDiscuss() {
		showDiscuss(pid);
	}
	function onEdit() {
		addOrEditProblem(pid);
	}
	function onDelete() {
		deleteProblem({
					pid : pid,
					success : function() {
						closeTab(panel.id);
					}
				});
	}
	function onRejudge() {
		rejudgeProblemStatus(pid);
	}
	function onClean() {
		cleanProblemStatus(pid);
	}
	function onSubmit() {
		submitCode(pid);
	}
}

function getDiscussCount(obj) {
	ajax({
				url : url.getDiscussCount,
				params : {
					pid : obj.pid
				},
				success : obj.success
			});
}
